/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Modelo.DiasFeriados;
import Modelo.Listas;
import Modelo.Multa;
import Modelo.UnidadT;
import Modelo.Validaciones;
import Modelo.Viaje;
import Vista.JFrameMultas;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.util.Date;
import java.util.LinkedList;


public class ControladorMultas implements ActionListener
{
    private JFrameMultas formMultas;
    private Listas list;
    
    public ControladorMultas(Listas lis)
    {
        list = lis;
        formMultas = new JFrameMultas();
        formMultas.agregarListener(this);
        formMultas.setVisible(true);
        formMultas.setLocationRelativeTo(null);
        AsignarCodigoMulta();
        LlenarComboDiasF();
        Enabled(false);
        
    }

    @Override
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource().equals(formMultas.getCmbDiasFeriados()))
            Enabled(true);
        if(e.getSource().equals(formMultas.getBtnBuscar()))
            new ControladorConsulMultas(list);
        if(e.getSource().equals(formMultas.getBtnEliminar()))
            Limpiar();
        if(e.getSource().equals(formMultas.getBtnGuardar()))
            Registrar();
        if(e.getSource().equals(formMultas.getBtnSalir()))
            formMultas.dispose();
        if(e.getSource().equals(formMultas.getBtnViajeAleatorio()))
            GenerarViajeAleatorio();
    }
    
    private void LlenarComboDiasF()
    {
        formMultas.getCmbDiasFeriados().removeAllItems();
        for(int i = 0; i< list.getListaFeriados().size();i++)
        {
            Date feriados;
            DateFormat df = DateFormat.getDateInstance();
            feriados = list.getListaFeriados().get(i).getFecha();
            String f =  df.format(feriados);
            formMultas.getCmbDiasFeriados().addItem(f);
        }
        formMultas.getCmbDiasFeriados().setSelectedIndex(-1);
        
    }
    
    private void GenerarViajeAleatorio()
    {
        if(formMultas.getCmbDiasFeriados().getSelectedIndex()>-1)
        {
            String diaF = formMultas.getCmbDiasFeriados().getSelectedItem().toString();
            for(int i = 0; i < list.getListaViajes().size();i++)
            {   
                String CISocio="";
                Date feriados;
                feriados = list.getListaViajes().get(i).getFechaSalida();
                DateFormat df = DateFormat.getDateInstance();
                String f =  df.format(feriados);
                if(f.equals(diaF))
                {
                    Viaje viaje = list.getListaViajes().get(i);
                    for(int j=0; j<list.getListaUnidadT().size(); j++)
                    {
                        if(list.getListaUnidadT().get(j).getPlaca().equals(viaje.getPlacaVehiculo()))
                            CISocio = list.getListaUnidadT().get(j).getCISocio();
                    }
                    System.out.println("ola ka se");
                    formMultas.getTxtCodViaje().setText(viaje.getCodViaje());
                    formMultas.getTxtPlacaV().setText(viaje.getPlacaVehiculo());
                    formMultas.getTxtCedChofer().setText(viaje.getCiEmpleado());
                    formMultas.getTxtCedSocio().setText(CISocio);
                    formMultas.getTxtCodCoop().setText(viaje.getCodCooperativa());
                    
                }
                    
            }
        }
    }
    
    private void Registrar()
    {
        Multa multa = new Multa();
        String Cadena;

        
        if (formMultas.getCmbDiasFeriados().getSelectedIndex() == -1) {
            Mensajes.Aviso("Seleccione un dia feriado", "");
            formMultas.getCmbDiasFeriados().requestFocusInWindow();
            Enabled(false);
            return;
        }

        Cadena = formMultas.getTxtCodViaje().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Seleccione un viaje", "");
            formMultas.getBtnViajeAleatorio().requestFocusInWindow();
            return;
        }

        
        multa.Multa(formMultas.getLblCodMulta().getText(),
                    formMultas.getTxtCodViaje().getText(),
                    Validaciones.CnvStringFecha(formMultas.getCmbDiasFeriados().getSelectedItem().toString()),
                    formMultas.getTxtPlacaV().getText(),
                    formMultas.getTxtCodCoop().getText(),
                    formMultas.getTxtCedChofer().getText(),
                    formMultas.getTxtCedSocio().getText());

        list.getListaMultas().add(multa);
        Mensajes.Aviso("Multa agregada con exito", "");
        Limpiar();
        Enabled(false);
        formMultas.getCmbDiasFeriados().requestFocusInWindow();
        AsignarCodigoMulta();
    }
    
    private void AsignarCodigoMulta() {
        int nroM = list.getListaMultas().size() + 1;
        formMultas.getLblCodMulta().setText("M000"+nroM);
    }
    private void Limpiar() 
    {
        formMultas.getCmbDiasFeriados().setSelectedIndex(-1);
        formMultas.getTxtCodViaje().setText("");
        formMultas.getTxtPlacaV().setText("");
        formMultas.getTxtCedChofer().setText("");
        formMultas.getTxtCedSocio().setText("");
        formMultas.getTxtCodCoop().setText("");
        Enabled(false);
    }
    private void Enabled(boolean Status) 
    {
        formMultas.getCmbDiasFeriados().setEnabled(!Status);
        formMultas.getBtnViajeAleatorio().setEnabled(Status);
    }
}
